package com.cskaoyan.interceptor;

import org.aopalliance.intercept.MethodInterceptor;
import org.aopalliance.intercept.MethodInvocation;
import org.springframework.stereotype.Component;

/**
 * @author stone
 * @date 2022/11/11 17:36
 */
@Component
public class CountTimeAdvice implements MethodInterceptor {
    // invoke就是指导我们做增强的
    @Override
    public Object invoke(MethodInvocation methodInvocation) throws Throwable {
        // 计算委托类方法的执行时间

        // 在委托类方法执行之前记录一个时间
        long start = System.currentTimeMillis();
        // 执行委托类方法 → 之前 method.invoke
        // 返回值就是委托类方法返回的值
        Object proceed = methodInvocation.proceed();

        // 在委托类方法执行之后再记录一个时间，做减法
        long end = System.currentTimeMillis();
        System.out.println("执行时间：" + (end - start));
        return proceed;
    }
}
